1. Field of the Invention
The present invention relates to communication terminals and a retransmission control method for controlling retransmission when performing data communications by using Transport Control Protocol (TCP).
2. Description of the Related Art
Sending terminals and receiving terminals which perform data communications in accordance with TCP used in the internet and the like are currently in wide use. In TCP, in order to achieve reliable data communications, a sending terminal has functions of transmitting a segment, and of re-transmitting the segment when the sending terminal has not received an acknowledgment (ACK) corresponding to the transmitted segment from a receiving terminal for a certain period of time.
In TCP, the sending terminal measures a round trip time (RTT) by using an ACK which the receiving terminal sends back in response to a segment transmitted from the sending terminal; calculates a retransmission timeout (RTO) by using the following set of formulas 1 to 4; and retransmits the segment when the sending terminal has not received an ACK from the receiving terminal before the RTO is completed (for example, refer to V. Paxon and M. Allman, “Computing TCP's Retransmission Tuner,” RFC2988, November, 2000).Err=M−A  (1)A<−A+gErr  (2)D<−D+h(|Err|−D)  (3)RTO=A+4D  (4)
In the formulas 1 to 4, Err denotes a difference between an actually-measured value M and a currently estimated value of the RTT; A denotes a smoothed RTT (a smoothed mean RTT value); D denotes a smoothed mean deviation; g denotes a coefficient of the mean (usually, ⅛); and h denotes a coefficient of the mean (0.25).
Note that an RTT is calculated as follows. Specifically, when a timestamp option is used, the sending terminal calculates the RTT by using a timestamp echo. Alternatively, when the timestamp option is not used, the sending terminal stores a time of transmitting a segment firstly, and then calculates the RTT by receiving an ACK corresponding to the segment previously stored (for example, refer to “Transmission Control Protocol,” RFC793, September, 1981, and V. Jacobson, R. Branden, and D. borman, “TCP Extensions for High Performance,” RFC1323, May , 1992).
When an ACK has not been returned from the receiving terminal to the sending terminal during the RTO thus calculated, the segment is retransmitted. Thereafter, when the ACK is also not returned, the retransmission of the segment is repeated. In this case, the sending terminal continues retransmitting the segment with the RTO doubled each time (maximum 64 seconds), since a possible reason for the failure of receiving the ACK is that the communication status is poor, for example.
When TCP is used under a wireless environment, handover and phasing cause the wireless environment to be in a poor state. This results in bursty losses of segments, which causes an RTO. In addition, when the segment retransmitted due to an occurrence of the RTO is again lost, the sending terminal cannot retransmit the segment during a time period of the first RTO×2. As a result, the throughput is considerably lowered.
FIG. 1 shows a state in which the throughput is lowered. When an ACK is not returned for a certain period of time because a first segment is lost due to a poor state of the wireless environment, the segment is retransmitted at the first attempt in response to an occurrence of the RTO. When the receiving terminal does not receive the segment retransmitted at the first attempt, the sending terminal retransmits the segment at the second attempt after the time period of the RTO×2 elapses. When the receiving terminal does not receive the segment transmitted at the second attempt as well, the sending terminal retransmits the segment at the third attempt after the time period of the RTO×4.
In this way, the time period until the retransmission of the segment increases every time the retransmitted segment is lost. Accordingly, when the retransmitted segment is lost, the sending terminal does not retransmit the segment immediately regardless of the recovery of the wireless status of the receiving terminal. As a result, in spite of a status in which segments can be exchanged between the sending terminal and the receiving terminal, the segments are not transmitted, and thereby the throughput is lowered.
These problems can be mitigated by shortening the time period of the RTO, or by causing the RTO not to be doubled at a time of the segment retransmission. However, when the RTT varies due to a retransmission technique or the like used in a wireless link, another problem occurs that a segment is retransmitted even though the segment is not lost. In addition, there is still another problem that a wasteful retransmission is repeated when the wireless status of the receiving terminal does not recover.